CloudKit CKQuery

要从数据库中选择记录,需使用 CKQueryCKQuery 描述了如何找到所有特定类型的记录,这些记录符合某些条件。

CloudKit 仅支持可用 NSPredicate 函数的子集。这些包括数学比较,一些字符串和集合操作,如“字段匹配列表中的项目之一”,以及特殊距离函数。CloudKit 支持的函数及其使用方法的详细列表可以在 CKQuery 类参考中找到。


Demo

出处:《CloudKit Tutorial: Getting Started | Kodeco

@objc func refresh(_ completion: @escaping (Error?) -> Void) {
  // 1.
  let predicate = NSPredicate(value: true)
  // 2.
  let query = CKQuery(recordType: "Establishment", predicate: predicate)
  establishments(forQuery: query, completion)
}

private func establishments(forQuery query: CKQuery,
    _ completion: @escaping (Error?) -> Void) {
  publicDB.perform(query,
      inZoneWith: CKRecordZone.default().zoneID) { [weak self] results, error in
    guard let self = self else { return }
    if let error = error {
      DispatchQueue.main.async {
        completion(error)
      }
      return
    }
    guard let results = results else { return }
    self.establishments = results.compactMap {
      Establishment(record: $0, database: self.publicDB)
    }
    DispatchQueue.main.async {
      completion(nil)
    }
  }
}
  1. 创建了一个为 true 的谓词
  2. 创建一个 CKQuery,指定是对什么类型的查询
  3. 在 establishments 方法中,执行具体的查询操作


本文作者:Maeiee

本文链接:CloudKit CKQuery

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!